/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ilves;

import java.io.Serializable;
import java.util.ArrayList;

/**
 *
 * @author jleh
 */
public class Course implements Serializable, Comparable {
    private String name, start_date, end_date;
    private int opintopisteet;
    private ArrayList<Opetustapahtuma> events = new ArrayList<Opetustapahtuma>();
    private boolean suoritettu;
    private String luennoitsija;

    public Course(String start, String end, String topic) {
        name = topic;
        start_date = start;
        end_date = end;
        suoritettu = false; //Defaulttina näin?
        luennoitsija = null;
        opintopisteet = 0;
    }

    public void addOp(int op){
        opintopisteet = op;
    }

    public String getName() {
        return name;
    }

    public String getStartDate(){
        return start_date;
    }

    public String getEndDate() {
        return end_date;
    }

    public int getOp() {
        return opintopisteet;
    }

    public void addEvent(Opetustapahtuma tapahtuma){
        events.add(tapahtuma);
    }

    public ArrayList<Opetustapahtuma> getEvents() { //Nämäkin vois ehkä antaa ulos jossain muussa muodossa?
        return events;
    }

    public Opetustapahtuma[] getEventsArray() {
        return events.toArray(new Opetustapahtuma[0]);
    }

    public String getLuennoitsija() {
        return luennoitsija;
    }

    public boolean getSuoritettu() {
        return suoritettu;
    }

    public boolean suorita() {
        if (this.suoritettu)
            return false;
        this.suoritettu = true;
        return true;
    }
    
    public void setSuoritettu(boolean s) {
        suoritettu = s;
    }
    
    public void setLuennoitsija(String L) {
        luennoitsija = L;
    }

    @Override
    public String toString() {
        return this.name + (this.suoritettu ? " [suoritettu]" : "");
    }

    public int compareTo(Object o) {
        if (!(o instanceof Course)) return 0;
        Course x = (Course) o;
        return this.name.compareToIgnoreCase(x.name);
    }
}



